package org.stvd.service.common;

import java.util.List;
import java.util.Map;

import org.stvd.common.utils.ServiceResult;
import org.stvd.entities.common.AuditFlow;
import org.stvd.service.base.BaseService;

/**
 * 审核记录Service接口类
 * @author houzx
 */
public interface AuditFlowService extends BaseService<AuditFlow>{

    /**
     * 根据主体信息获取审核记录
     * @param sourceTable 源数据表名
     * @param sourceId 源数据ID
     * @return
     */
    public AuditFlow getAuditFlowByInfoId(String sourceTable, String sourceId);
    
    /**
     * 根据主体信息查询最新审核记录
     * @param sourceTable 源数据表名
     * @param sourceId 源数据ID
     * @return
     */
    public Map<String, Object> getNewAuditFlowDetail(String sourceTable, String sourceId);
    
    /**
     * 根据主体信息查询全部审核记录列表
     * @param sourceTable 源数据表名
     * @param sourceId 源数据ID
     * @return
     */
    public List<Map<String, Object>> listAllAuditFlowDetail(String sourceTable, String sourceId);
    
    
    /**
     * 根据主体信息查询全部审核记录列表
     * @param sourceTable 源数据表名
     * @param sourceId 源数据ID
     * @param auditorId 审核人ID
     * @return
     */
    public List<Map<String, Object>> listUserAuditFlowDetail(String sourceTable, String sourceId, String auditorId);
    
    /**
     * 插入新的审核记录信息
     * @param sourceTable 源数据表名
     * @param sourceId 源数据ID
     * @param auditorId 审核人ID
     * @param auditorName 审核人姓名
     * @param auditStatus 审核状态
     * @param auditContent 审核意见
     * @return
     */
    public ServiceResult<Map<String, Object>> insertNewAuditFlow(String sourceTable, String sourceId, String auditorId, String auditorName, String auditStatus, String auditContent);
    
    /**
     * 删除审核记录信息
     * @param sourceTable 源数据表名
     * @param sourceId 源数据ID
     * @return
     */
    public ServiceResult<Map<String, Object>> deleteAuditFlowBySource(String sourceTable, String sourceId);
    
    /**
     * 删除审核记录信息
     * @param flowId 主键ID
     * @return
     */
    public ServiceResult<Map<String, Object>> deleteAuditFlowById(String flowId);

}
